import cv2 as cv
import numpy as np

img = cv.imread('1.jpg')
template = cv.imread('template.jpg')
# template = img[214:340, 319:448] 
# cv.imwrite('template.jpg', template)

w, h, l = template.shape #获取模板的宽、高、通道数

#模板匹配
result = cv.matchTemplate(img, template, cv.TM_CCOEFF_NORMED) # 图像，模板，匹配方法
# 对于匹配方法：
# 推荐优先使用 TM_CCOEFF_NORMED 或 TM_SQDIFF_NORMED，并结合阈值筛选或多尺度匹配以提高准确性。
# 1. 平方差匹配法（ TM_SQDIFF ）：最佳匹配：最小值（差值越小，匹配度越高）。
# 2. 归一化平方差匹配法（ TM_SQDIFF_NORMED ）：最佳匹配：最小值（差值越小，匹配度越高）。
# 3. 相关匹配法（ TM_CCORR ）：最佳匹配：最大值（相关性越大，匹配度越高）。
# 4. 归一化相关匹配法（ TM_CCORR_NORMED ）：最佳匹配：最大值（相关性越大，匹配度越高）。
# 5. 相关系数匹配法（ TM_CCOEFF ）：最佳匹配：最大值（相关性越大，匹配度越高）。
# 6. 归一化相关系数匹配法（ TM_CCOEFF_NORMED ）：最佳匹配：最大值（相关性越大，匹配度越高）。



min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result) #获取匹配结果的最大值、最小值、最小位置、最大位置

# 绘制矩形框
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)

cv.imshow('Original Image', img)
cv.waitKey(0)
cv.destroyAllWindows()